#include <string>
// Tests for default arguments

class ValueType
{
    public:
        static ValueType null;
};

class ReferenceType
{
    public:

    void Explode(int value, const ValueType & = ValueType::null)
    {

    }
};

void DoSomething(int need, float optional = 2.0, ReferenceType * ref = 0, 
        const ValueType & val = ValueType::null);

void DoSomethingElse(bool happy, const ValueType & = ValueType::null);

void JustDoIt(bool = false, int = 12, char = 'c', const ValueType & = ValueType::null);


void BugCheck(std::string yellow = "bird");
void BugCheck(float f, int x = 1
        + 2
        + 3
        + 4
        + 5);
void BugCheck(int x, const char * something = "alpha\nbeta\ngrass\"what?\"");
